# 作者: 薛文寅仟
# 2024年12月30日19时43分29秒
# 5443912@qq.com
class Gun:
    def __init__(self, model):
        # 枪的型号
        self.model = model
        # 子弹数量，如果一些属性初始化的时候不用传但你需要这个属性
        # 那就要这样写
        self.bullet_count = 0

    def add_bullet(self, count):
        """
        添加子弹
        :param count: 子弹数量
        :return:
        """
        self.bullet_count += count

    def shoot(self):
        """
        射击
        :return:
        """
        if self.bullet_count <= 0:
            print("没有子弹了...")
            return
        self.bullet_count -= 1
        print(f'{self.model}发射子弹[{self.bullet_count}...]')


class Soldier:
    def __init__(self, name, gun: Gun = None):
        self.name = name
        self.gun = gun

    def fire(self):
        """
        士兵执行开火行为
        :return:
        """
        if self.gun is None:
            print(f"{self.name}还没有枪...")
            return
        print(f"冲啊...{self.name}")
        # 给抢添加50颗子弹
        self.gun.add_bullet(50)
        # 开火发射一颗子弹
        self.gun.shoot()


if __name__ == '__main__':
    # 创建一把型号为ak47的枪
    ak47 = Gun("ak47")
    # 添加50发子弹
    ak47.add_bullet(50)
    # 发射一颗子弹，子弹数量减一
    # ak47.shoot()
    xusanduo = Soldier("许三多")
    xusanduo.gun = ak47
    xusanduo.fire()
    print(xusanduo.gun)
